#include <stdio.h>
#include <string.h>
#include <stdlib.h>

//定义管理系统用户名，密码
#define USERNAME "admin"
#define PASSWORD "admin123"

//团员信息结构体
typedef struct {
    char name[50];
    char id[10];
    char college[100];
    int YearOFJoin;
}MEMBER;
int AuthAdmin();        //用户认证系统
void MemberAdder(FILE *file);     //新增团员信息
void MemberDeleter(FILE *file);   //删除团员信息
void MemberChanger(FILE *file);   //修改团员信息
void MemberSearcher(FILE *file);  //查询团员信息
void MemberSearcher_id(FILE *file); //通过学号查询团员信息
void MemberSearcher_name(FILE *file); //通过姓名查询团员信息
void MemberFilter(FILE *file);    //统计团员信息
void MemberLister(FILE *file);    //团员信息排序

int main() {
    // 认证用户权限
    if (!AuthAdmin()) {
        printf("认证失败，正在退出系统");
        return 1;
    }
    FILE *file;
    int choice;     //用于记录用户输入的菜单编号

    //打开文件，如果文件不存在，则创建新文件
    file = fopen("members.txt","a+");
    if (file==NULL) {
        printf("打开文件的时候错误，请检查文件members.txt!");
        return 1;
    }
    do {
        // 显示菜单
        printf("==================\n");
        printf("团员管理系统-菜单\n");
        printf("1. 新增团员信息 \n");
        printf("2. 删除团员信息 \n");
        printf("3. 修改团员信息 \n");
        printf("4. 查询团员信息 \n");
        printf("5. 统计团员信息 \n");
        printf("6. 团员信息排序 \n");
        printf("7. 退出系统\n");
        printf("==================\n");
        printf("请输入菜单编号，执行相应的操作：\n");
        // 用户输入菜单编号
        scanf("%d", &choice);
        //查找相关模块并运行
        switch (choice)
        {   case 1:MemberAdder(file);break;
            case 2:
                MemberDeleter(file);
                break;
            case 3:MemberChanger(file);break;
            case 4:MemberSearcher(file);break;
            case 5:MemberFilter(file);break;
            case 6:MemberLister(file);break;
            case 7:printf("正在退出系统...");return 0;
            default:printf("错误! 请输入正确的菜单编号！");
        }
    }while (1);
    return 0;
}

int AuthAdmin() {
    char username[20];
    char password[20];

    printf("======团员管理系统======\n");
    printf("账号：");
    scanf("%s",username);

    printf("密码: ");
    scanf("%s",password);

    if (strcmp(username,USERNAME) == 0&& strcmp(password,PASSWORD) == 0) {
        printf("认证成功，正在进入系统..\n");
        return 1;   //认证成功
    }
    else {
        printf("用户名或密码错误！\n");
        return 0;   //认证失败
    }
}
void MemberAdder(FILE *file) {
    MEMBER member;
    printf("==================\n");
    printf("您正在进行团员信息录入工作\n");
    printf("请输入团员信息: \n");
    printf("   - 姓名: ");
    scanf("%s",member.name);
    printf("   - 学号：");
    scanf("%s",member.id);
    printf("   - 学院：");
    scanf("%s",member.college);
    printf("   - 入学年份: ");
    scanf("%d",&member.YearOFJoin);

    //写入文件
    fprintf(file,"%s %s %s %d\n",member.name,member.id,member.college,member.YearOFJoin);
    //关闭文件
    fclose(file);
    printf("==================\n");
    printf("%s 的信息存储成功！\n",member.name);
}
//删除团员信息
void MemberDeleter(FILE *file) {

}
//修改团员信息
void MemberChanger(FILE *file) {

} //查询团员信息
void MemberSearcher(FILE *file) {
    int choice;
    MEMBER member;
    printf("请选择查询团员信息的方式：\n");
    printf("1. 通过学号查询\n");
    printf("2. 通过姓名查询\n");
    scanf("%d",&choice);

    if (choice==1) {
        MemberSearcher_id(file);
    }
    else if (choice==2) {
        printf("请输入学号:");
        scanf("%s",member.id);
        MemberSearcher_name(file);
    }
}
//通过学号查询团员信息
void MemberSearcher_id(FILE *file) {
    char NumberToSearch[10];
    printf("请输入学号:");
    scanf("%s",NumberToSearch);

    //在文件中逐行查找相同的信息
    MEMBER member;
    while (fscanf(file,"%s %s %s %d",member.name,member.id,member.college,&member.YearOFJoin) != EOF) {
        if (strcmp(NumberToSearch,member.id) == 0) {
            printf("%s %s %s %d\n",member.name,member.id,member.college,&member.YearOFJoin);
        }

    }
    //输出用户数据
}
//通过姓名查询团员信息
void MemberSearcher_name(FILE *file) {
    MEMBER member;
    printf("请输入姓名:");
    scanf("%s",member.name);
}
//统计团员信息
void MemberFilter(FILE *file) {

}  //排序团员信息
void MemberLister(FILE *file) {

}
